package com.itheima.d8_generics_method;

import java.util.ArrayList;

/*
    1 泛型方法
        修饰符 <类型变量，类型变量，…>  返回值类型 方法名(形参列表) { }
    2 通配符
        就是 “?” ，可以在“使用泛型”的时候代表一切类型；  E T K V 是在定义泛型的时候使用。
    3 泛型的上下限(受限泛型)
        泛型上限:   ? extends Car :   ?  能接收的必须是Car或者其子类 。
        泛型下限：  ?  super Car :   ?  能接收的必须是Car或者其父类。
 */
public class Test {
    public static void main(String[] args) {
        ArrayList<Car> cars = new ArrayList<>();
        ArrayList<BWM> bwms = new ArrayList<>();
        ArrayList<Benz> benzs = new ArrayList<>();
        ArrayList<BWM3> bwm3s = new ArrayList<>();
        testRun(cars);
        testRun(bwm3s);
        testRun1(bwms);
        testRun3(benzs);
        testRun3(bwms);
    }
    public static <T> void testRun(ArrayList<T> car){
    }
    public static void testRun1(ArrayList<?> car){
    }
    public static void testRun3(ArrayList<? extends Car> cars){
    }
    public static void testRun4(ArrayList<? extends BWM> bwms){
    }
    public static void testRun5(ArrayList<? super BWM> bwm){}


}

class Car{}
class BWM extends Car{}
class Benz extends Car{}
class BWM3 extends BWM{}
